import { NestFactory } from '@nestjs/core';
import { ValidationPipe } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { AppModule } from './app.module';

/**
 * 应用启动函数
 * 初始化NestJS应用，配置全局中间件和管道
 */
async function bootstrap() {
  // 创建应用实例
  const app = await NestFactory.create(AppModule);
  
  // 获取配置服务
  const configService = app.get(ConfigService);
  
  // 配置全局验证管道
  app.useGlobalPipes(
    new ValidationPipe({
      // 白名单模式，过滤掉未在DTO中声明的属性
      whitelist: true,
      // 如果请求包含未声明的属性，抛出错误
      forbidNonWhitelisted: true,
      // 自动转换类型
      transform: true,
    }),
  );
  
  // 配置全局前缀
  app.setGlobalPrefix('api');
  
  // 启用CORS
  app.enableCors();
  
  // 获取服务器配置并启动应用
  const port = configService.get('server.port');
  const host = configService.get('server.host');
  
  await app.listen(port);
  
  console.log(`应用已启动: http://${host}:${port}/api`);
}

bootstrap();
